package com.netsdk.lib.structure;

import com.netsdk.lib.NetSDKLib;
import com.sun.jna.Pointer;

/**
 * @author 47081
 * @version 1.0
 * @description 用户信息扩展结构体
 * @date 2021/3/10
 */
public class NET_ACCESS_USER_INFO_EX extends NetSDKLib.SdkStructure {
    public byte[] szUserID = new byte[64];          // 用户ID
    public byte[] szName = new byte[128];           // 人员名称
    public int    emUserType;                       // 用户类型, 对应枚举 NET_ENUM_USER_TYPE
    public int    nUserStatus;                      // 用户状态, 0 正常, 1 冻结
    public int    nUserTime;                        // 来宾卡的通行次数
    public byte[] szCitizenIDNo = new byte[64];     // 身份证号码
    public byte[] szPsw = new byte[64];             // UserID+密码开门时密码
    public int    nDoorNum;                         // 有效的门数目
    public int[]  nDoors = new int[64];             // 有权限的门序号
    public int    nTimeSectionNum;                  // 有效的开门时间段数目
    public int[]  nTimeSectionNo = new int[64];     // 开门时间段索引
    public int    nSpecialDaysScheduleNum;          // 假日计划表示数量
    public int[]  nSpecialDaysSchedule = new int[64]; // 假日计划标识
    public NET_TIME_EX stuValidBeginTime = new NET_TIME_EX(); // 开始有效期
    public NET_TIME_EX stuValidEndTime = new NET_TIME_EX();   // 结束有效期
    public int    bFirstEnter;                      // 是否拥有首卡权限, 1-true, 0-false
    public int    nFirstEnterDoorsNum;              // 拥有首用户权限的门数量
    public int[]  nFirstEnterDoors = new int[64];   // 拥有首用户权限的门序号
    public int    emAuthority;                      // 用户权限
    public int    nRepeatEnterRouteTimeout;         // 反潜超时时间
    public int    nFloorNum;                        // 有效的楼层数量
    public byte[] szFloorNos = new byte[256];       // 楼层号列表
    public int    nRoom;                            // 房间个数
    public byte[] szRoomNos = new byte[256];        // 房间号列表
    public byte[] szClassInfo = new byte[256];      // 班级信息
    public byte[] szStudentNo = new byte[64];       // 学号
    public byte[] szCitizenAddress = new byte[128]; // 身份证地址
    public NET_TIME stuBirthDay = new NET_TIME();   // 出生日期
    public int    emSex;                            // 性别
    public byte[] szDepartment = new byte[128];     // 部门
    public byte[] szSiteCode = new byte[32];        // 站点码
    public byte[] szPhoneNumber = new byte[32];     // 手机号码
    public byte[] szDefaultFloor = new byte[8];     // 默认楼层号
    public byte[] szEthnicity = new byte[64];       // 民族
    public int    emTypeOfCertificate;              // 证件类型
    public byte[] szCountryOrAreaCode = new byte[8]; // 国籍或所在地区代码
    public byte[] szCountryOrAreaName = new byte[64]; // 国籍或所在地区名称
    public byte[] szCertificateVersionNumber = new byte[64]; // 证件版本号
    public byte[] szApplicationAgencyCode = new byte[64]; // 申请受理机关代码
    public byte[] szIssuingAuthority = new byte[64]; // 签发机关
    public byte[] szStartTimeOfCertificateValidity = new byte[64]; // 证件有效开始时间
    public byte[] szEndTimeOfCertificateValidity = new byte[64]; // 证件有效结束时间
    public int    nSignNum;                         // 证件签发次数
    public byte[] szActualResidentialAddr = new byte[108]; // 实际家庭住址
    public byte[] byReserved = new byte[512];       // 保留字节
    
    public static class NET_TIME_EX extends NetSDKLib.SdkStructure {
        public int dwYear;
        public int dwMonth;
        public int dwDay;
        public int dwHour;
        public int dwMinute;
        public int dwSecond;
        public int dwMillisecond;
        public int dwReserved;
    }
    
    public static class NET_TIME extends NetSDKLib.SdkStructure {
        public int dwYear;
        public int dwMonth;
        public int dwDay;
        public int dwHour;
        public int dwMinute;
        public int dwSecond;
    }
}